rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
↳ QTRS
↳ Overlay + Local Confluence
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
REV2(x, ++(y, z)) → REV(++(x, rev(rev2(y, z))))
REV(++(x, y)) → REV1(x, y)
REV1(x, ++(y, z)) → REV1(y, z)
REV2(x, ++(y, z)) → REV2(y, z)
REV2(x, ++(y, z)) → REV(rev2(y, z))
REV(++(x, y)) → REV2(x, y)
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
REV2(x, ++(y, z)) → REV(++(x, rev(rev2(y, z))))
REV(++(x, y)) → REV1(x, y)
REV1(x, ++(y, z)) → REV1(y, z)
REV2(x, ++(y, z)) → REV2(y, z)
REV2(x, ++(y, z)) → REV(rev2(y, z))
REV(++(x, y)) → REV2(x, y)
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
REV1(x, ++(y, z)) → REV1(y, z)
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
REV1(x, ++(y, z)) → REV1(y, z)
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ QDPSizeChangeProof
↳ QDP
REV1(x, ++(y, z)) → REV1(y, z)
From the DPs we obtained the following set of size-change graphs:
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
REV2(x, ++(y, z)) → REV(++(x, rev(rev2(y, z))))
REV2(x, ++(y, z)) → REV2(y, z)
REV2(x, ++(y, z)) → REV(rev2(y, z))
REV(++(x, y)) → REV2(x, y)
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))
The following pairs can be oriented strictly and are deleted.
The remaining pairs can at least be oriented weakly.
REV2(x, ++(y, z)) → REV(++(x, rev(rev2(y, z))))
REV2(x, ++(y, z)) → REV2(y, z)
REV2(x, ++(y, z)) → REV(rev2(y, z))
Used ordering: Polynomial interpretation [25]:
REV(++(x, y)) → REV2(x, y)
POL(++(x1, x2)) = 1 + x2
POL(REV(x1)) = x1
POL(REV2(x1, x2)) = 1 + x2
POL(nil) = 1
POL(rev(x1)) = x1
POL(rev1(x1, x2)) = 0
POL(rev2(x1, x2)) = x2
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
↳ QTRS
↳ Overlay + Local Confluence
↳ QTRS
↳ DependencyPairsProof
↳ QDP
↳ DependencyGraphProof
↳ AND
↳ QDP
↳ QDP
↳ QDPOrderProof
↳ QDP
↳ DependencyGraphProof
REV(++(x, y)) → REV2(x, y)
rev(nil) → nil
rev(++(x, y)) → ++(rev1(x, y), rev2(x, y))
rev1(x, nil) → x
rev1(x, ++(y, z)) → rev1(y, z)
rev2(x, nil) → nil
rev2(x, ++(y, z)) → rev(++(x, rev(rev2(y, z))))
rev(nil)
rev(++(x0, x1))
rev1(x0, nil)
rev1(x0, ++(x1, x2))
rev2(x0, nil)
rev2(x0, ++(x1, x2))